program	juego;
uses crt;
type
	conjunto=set of char;
	jugadores=array[1..100] of integer;
	rng=set of char;
	matrizatrib=array[1..22] of string;
	armas=array[1..10] of string;
const
	matestadisticas:matrizatrib=('fisico','destreza','instinto','inteligencia','presencia','fuerza','vitalidad','resistencia','agilidad','coordinacion','velocidad','memoria','logica','inventiva','carisma','voluntad','apariencia','percepcion','intuicion','concentracion','PV actual','PV maximo');
(*$i mover.pas *)
(*$i mover2.pas *)
(*$i mover3.pas *)
(*$i mover4.pas *)
(*$i mover5.pas *)
(*$i mover6.pas *)
(*$i damagecombateyprev.pas *)
(*$i combate.pas *)
(*$i tienda1.pas *)
(*$i tienda2.pas *)
(*$i eleccionarmas.pas *)

procedure encritarYdesencriptar(var cad:string; enc:boolean;var cod:integer);
var
	ip:integer;
begin
	if enc then	
		cod:=random(255)+1;
	for ip:=1 to length(cad) do
		cad[ip]:=chr((ord(cad[ip]))xor cod);
end;

procedure menujuego;
begin
	writeln('MENU:');
	writeln(' Luchar');
	writeln(' Descansar');
	writeln(' Ver estadisticas');
	writeln(' Tienda');
	writeln(' Elegir equipamiento');
	writeln(' Campa',#164,'a');
	write(' Salir');
end;
procedure descansar(nv:integer;var exp:integer);
var
	i,cont1:longint;
begin
	clrscr;
	cursoroff;
	writeln('______________________');
	writeln(#179,'                    ',#179);
	for i:=1 to 22 do
		write(#238);
	cont1:=1;
	gotoxy(2,2);
	for i:=1 to 100*exp do
		begin
			if i/(100*nv)*10=cont1/2 then
				begin
					gotoxy(cont1+1,2);
					textcolor(lightgreen);
					write(#219);
					gotoxy(1,4);
					clreol;
					write((i/(100*nv)*100):0:1,'%','-PV=':5,i div 100);
					cont1:=cont1+1;
				end;
		end;
	if exp<nv then
		for i:=exp to 100*nv do
			begin
				if i/(100*nv)*10=cont1/2 then
					begin
						gotoxy(cont1+1,2);
						textcolor(lightgreen);
						write(#219);
						gotoxy(1,4);
						clreol;
						write((i/(100*nv)*100):0:1,'%','-PV=':5,i div 100);
						cont1:=cont1+1;
					end;
				delay(1);
			end;
	textcolor(white);
	exp:=nv;
	readkey;
	cursoron;
	clrscr;
end;

procedure menucombatespada(o:boolean;var opmen:rng);
begin
	if o then
		begin
			writeln('a.-Ataque con arma');
			opmen:=opmen+['a','A'];
		end;
end;

procedure menucombat(m:string);
begin
	writeln('Elige ',m,':',#10#13,
			'1.-Puñetazo',#10#13,
			'2.-Patada',#10#13,
			'3.-Bloqueo',#10#13,
			'4.-Disparo',#10#13,
			'5.-Esquivar',#10#13,
			'6.-Concentracion',#10#13,
			'7.-Contrataque',#10#13,
			'8.-Asesinar');
end;

procedure cargaequipo(var bonificacion:jugadores;util:string);
var
	ficheroeq:text;
	c,pos:integer;

begin
	ASSIGN(ficheroeq,'equipamiento/'+util+'.txt');
	RESET(ficheroeq);
	pos:=1;
	while not(EOF(ficheroeq)) do
		begin
			if pos<21 then
				readln(ficheroeq,c);
			if pos=1 then
				bonificacion[pos]:=c;
			if pos=2 then
				bonificacion[pos]:=c;
			if pos=3 then
				bonificacion[pos]:=c;
			if pos=4 then
				bonificacion[pos]:=c;
			if pos=5 then
				bonificacion[pos]:=c;
			if pos=6 then
				bonificacion[pos]:=c;
			if pos=7 then
				bonificacion[pos]:=c;
			if pos=8 then
				bonificacion[pos]:=c;
			if pos=9 then
				bonificacion[pos]:=c;
			if pos=10 then
				bonificacion[pos]:=c;
			if pos=11 then
				bonificacion[pos]:=c;
			if pos=12 then
				bonificacion[pos]:=c;
			if pos=13 then
				bonificacion[pos]:=c;
			if pos=14 then
				bonificacion[pos]:=c;
			if pos=15 then
				bonificacion[pos]:=c;
			if pos=16 then
				bonificacion[pos]:=c;
			if pos=17 then
				bonificacion[pos]:=c;
			if pos=18 then
				bonificacion[pos]:=c;
			if pos=19 then
				bonificacion[pos]:=c;
			if pos=20 then
				bonificacion[pos]:=c;
			pos:=pos+1;
		end;
	close(ficheroeq);
end;

procedure cargaenemigo(nv:char;var enemigo:jugadores;var nombreenemigo:string);
var
	ficheronivel:text;
	cadena,conk:integer;
	cadenanombre:string;

begin
	ASSIGN(ficheronivel,'enemigos/'+nv+'.txt');
	RESET(ficheronivel);
	conk:=1;
	while not(EOF(ficheronivel)) do
		begin
			if conk<21 then
				readln(ficheronivel,cadena)
			else
				readln(ficheronivel,cadenanombre);
			if conk=1 then
				enemigo[conk]:=cadena;
			if conk=2 then
				enemigo[conk]:=cadena;
			if conk=3 then
				enemigo[conk]:=cadena;
			if conk=4 then
				enemigo[conk]:=cadena;
			if conk=5 then
				enemigo[conk]:=cadena;
			if conk=6 then
				enemigo[conk]:=cadena;
			if conk=7 then
				enemigo[conk]:=cadena;
			if conk=8 then
				enemigo[conk]:=cadena;
			if conk=9 then
				enemigo[conk]:=cadena;
			if conk=10 then
				enemigo[conk]:=cadena;
			if conk=11 then
				enemigo[conk]:=cadena;
			if conk=12 then
				enemigo[conk]:=cadena;
			if conk=13 then
				enemigo[conk]:=cadena;
			if conk=14 then
				enemigo[conk]:=cadena;
			if conk=15 then
				enemigo[conk]:=cadena;
			if conk=16 then
				enemigo[conk]:=cadena;
			if conk=17 then
				enemigo[conk]:=cadena;
			if conk=18 then
				enemigo[conk]:=cadena;
			if conk=19 then
				enemigo[conk]:=cadena;
			if conk=20 then
				enemigo[conk]:=cadena;
			if conk=21 then
				nombreenemigo:=cadenanombre;
			conk:=conk+1;
		end;
	close(ficheronivel);
end;

procedure cargajugador(jug:string;var jj:jugadores);
var
	conk:integer;
	ficheroprofile:text;
	d:string;
	
begin
	conk:=1;
	d:='jugadores/'+jug+'/profileatrib'+jug+'.txt';
	ASSIGN(ficheroprofile,d);
	RESET(ficheroprofile);
	while not(EOF(ficheroprofile)) do
	   begin
			readln(ficheroprofile,jj[conk]);
			//writeln(jj[conk]);
			conk:=conk+1;
	   end;
	close(ficheroprofile);
	d:='jugadores/'+jug+'/profilefis'+jug+'.txt';
	ASSIGN(ficheroprofile,d);
	RESET(ficheroprofile);
	while not(EOF(ficheroprofile)) do
	   begin
			readln(ficheroprofile,jj[conk]);
			//writeln(jj[conk]);
			conk:=conk+1;
	   end;
	close(ficheroprofile);
	d:='jugadores/'+jug+'/profiledes'+jug+'.txt';
	ASSIGN(ficheroprofile,d);
	RESET(ficheroprofile);
	while not(EOF(ficheroprofile)) do
	   begin
			readln(ficheroprofile,jj[conk]);
			//writeln(jj[conk]);
			conk:=conk+1;
	   end;
	close(ficheroprofile);
	d:='jugadores/'+jug+'/profileint'+jug+'.txt';
	ASSIGN(ficheroprofile,d);
	RESET(ficheroprofile);
	while not(EOF(ficheroprofile)) do
	   begin
			readln(ficheroprofile,jj[conk]);
			//writeln(jj[conk]);
			conk:=conk+1;
	   end;
	close(ficheroprofile);
	d:='jugadores/'+jug+'/profilepre'+jug+'.txt';
	ASSIGN(ficheroprofile,d);
	RESET(ficheroprofile);
	while not(EOF(ficheroprofile)) do
	   begin
			readln(ficheroprofile,jj[conk]);
			//writeln(jj[conk]);
			conk:=conk+1;
	   end;
	close(ficheroprofile);
	d:='jugadores/'+jug+'/profileins'+jug+'.txt';
	ASSIGN(ficheroprofile,d);
	RESET(ficheroprofile);
	while not(EOF(ficheroprofile)) do
	   begin
			readln(ficheroprofile,jj[conk]);
			//writeln(jj[conk]);
			conk:=conk+1;
	   end;
	close(ficheroprofile);
	d:='jugadores/'+jug+'/profilepv'+jug+'.txt';
	ASSIGN(ficheroprofile,d);
	RESET(ficheroprofile);
	while not(EOF(ficheroprofile)) do
	   begin
			readln(ficheroprofile,jj[conk]);
			//writeln(jj[21]);
			conk:=conk+1;
	   end;
	close(ficheroprofile);
end;

procedure barras(player:string;pvactu,pvtotal:integer);
var
	q,cont:integer;
begin
	write(player,' PV:',pvactu);
	gotoxy(30,wherey);
	write('|');
	cont:=1;
	textcolor(yellow);
	if (pvactu/pvtotal)<=0.25 then
		textcolor(lightred);
	if (pvactu/pvtotal)>=0.75 then
		textcolor(lightgreen);
	for q:=1 to pvactu do
		if abs(((q/pvtotal)*10)-(cont/2))<0.2 then
			begin
				write(#205);
				cont:=cont+1;
			end;
	textcolor(white);
	for q:=cont to 20 do
		write(' ');
	writeln('|');
end;

procedure combatecpu(var contragcpu,ataque,contragj1,contragj2:boolean;
					var rangocpucombat:rng;
					nombrej1,nombrej2,nombrecpu,nombrecpu2,nombrecpu3:string;
					var pvactuj1,pvactuj2,pvcpuactu,pvcpu2actu,pvcpu3actu:integer;
					nenemigos,pvtotalj1,pvtotalj2,pvtotalcpu,pvtotalcpu2,pvtotalcpu3:integer;
					var bonicpu,bonicpu2,bonicpu3,bonij1,bonij2:integer;
					estcpu,estmodcpu,estmodj1,estj1,estmodj2,estj2:jugadores;
					ord1,ord2,ord3:char;var p,p2:integer);
var
	nombreatack:string;
	damagecpu1,damagecortcpu:integer;
	opcioncombat,objetivo:char;
begin
	clrscr;
	barras(nombrej1,pvactuj1,pvtotalj1);
	barras(nombrej2,pvactuj2,pvtotalj2);
	barras(nombrecpu+' '+ord1,pvcpuactu,pvtotalcpu);
	if nenemigos>1 then
		barras(nombrecpu2+' '+ord2,pvcpu2actu,pvtotalcpu2);
	if nenemigos>2 then
		barras(nombrecpu3+' '+ord3,pvcpu3actu,pvtotalcpu3);
	bonicpu:=0;
	bonij1:=bonij1+1;
	bonij2:=bonij2+1;
	bonicpu2:=bonicpu2+1;
	bonicpu3:=bonicpu3+1;
	contragcpu:=false;
	damagecpu1:=0;
	writeln(nombrecpu,' 1-----------------------------');
	repeat
		opcioncombat:=chr(random(256));
	until opcioncombat in ['1','2','4'];
	repeat
		objetivo:=chr((random(2)+1)+48);
	until objetivo in rangocpucombat;
	if objetivo='1' then
		writeln('Objetivo: ',nombrej1)
	else
		writeln('Objetivo: ',nombrej2);
	if opcioncombat in ['1','2','4'] then
		case objetivo of
			'1':combatejugador(nombreatack,damagecpu1,damagecortcpu,p,pvactuj1,pvcpuactu,opcioncombat,estcpu,estmodcpu,estmodj1,estj1,contragj1);
			'2':combatejugador(nombreatack,damagecpu1,damagecortcpu,p2,pvactuj2,pvcpuactu,opcioncombat,estcpu,estmodcpu,estmodj2,estj2,contragj2);
		end;
	if objetivo='1' then
		writeln(nombreatack,'-Su golpe hace: da',#164,'o ',damagecpu1,' a objetivo ',nombrej1)
	else
		writeln(nombreatack,'-Su golpe hace: da',#164,'o ',damagecpu1,' a objetivo ',nombrej2);
	writeln(nombrej1,' pv: ',pvactuj1);
	writeln(nombrej2,' pv: ',pvactuj2);
	writeln('Pv ',nombrecpu,' 1: ',pvcpuactu);
	if pvactuj1<=0 then
		rangocpucombat:=rangocpucombat-['1'];
	if pvactuj2<=0 then
		rangocpucombat:=rangocpucombat-['2'];
	ataque:=false;
	readkey;
end;
procedure intcontrasena(var c:string);
var
	p:char;
begin
	c:='';
	repeat
		p:=readkey;
		if (p<>#13)and(p<>#8) then
			begin
				write('*');
				c:=c+p;
			end;
		if p=#08 then
			if length(c)>=1 then
				begin
					c[0]:=char(length(c)-1);
					write(#08,' ',#08);
				end;
	until p=#13;
end;

(*$i combateall.pas *)
(*$i pantalladecarga.pas *)
(*$i campain.pas *)

var
	ficheronuevo:text;
	j:string;
	contrasena,contrasenaintrducida:string;
	carcon:integer;
	j1,j2(*,cpu,cpu2,cpu3*):jugadores;
	opmen:conjunto;
	k,op(*,opcombat*):char;
	xmenu,ymenu,codigo:integer;
	oppulsa:char;
	nombre(*,nomcpu,nomcpu2,nomcpu3*),nomj1,nomj2:string;
	//caracteristicas
		fis,des,ins,int,pre,ptoscarascteristicas:integer;
	//atributos
		ptosatributosf,ptosatributosd,ptosatributosint,ptosatributosins,ptosatributospre:integer;
		//fisicos
			ffue,fvit,fres:integer;
		//Destreza
			dag,dcor,dvel:integer;
		//inteligencia
			imen,ilog,iinv:integer;
		//presencia
			pcar,pvol,pap:integer;
		//instinto
			iper,iint,iconc:integer;
	//opcrear
		opcrea:char;
	//arma jugadores
		armaj1,armaj2:string;
	//pv
		pvj1,pvtotj1,pvj2,pvtotj2(*,pvcpu,pvtotcpu,pvcpu2,pvtotcpu2,pvcpu3,pvtotcpu3*):integer;
	//iniciativas
		i(*,inij1,inij2,inicpu,inicpu2,inicpu3*):integer;
		//atack:boolean;
		//bj1,bj2,bcpu,bcpu2,bcpu3:integer;
	//daño
		//normal
			//dmg1,dmg2,dmgcpu1,dmgcpu2,dmgcpu3:integer;
		//objetivo
			//obj:char;
			//rango,rangocpu:rng;
		//dañocortante
			//dmgcortj1,dmgcortj2,dmgcortcpu,dmgcortcpu2,dmgcortcpu3:integer;
		//contras
			//contraj1,contraj2,contracpu,contracpu2,contracpu3:boolean;
	//opciones menu
		//campaña
			campana:boolean;
		//combate
			combate:boolean;
			//opcombatrango:rng;
		//decanso
			descanso:boolean;
			opdescanso:char;
		//ver estadisticas
			verest:boolean;
			opest:char;
		//tienda
			tienda:boolean;
			optienda,tipotienda:char;
		//elegir equipamiento
			elegireq:boolean;
			opelec:char;
		// salir
			salir:boolean;
	//dinero
		dinj1,dinj2:longint;
	//numenemig
		numeroenemigos:integer;
	//prev
		//prevj1,prevj2,prevcpu,prevcpu2,prevcpu3:integer;
	//nombre ataque
		//natack:string;
	//equipamiento
		equipadoespj1,equipadoespj2:boolean;
		//modj1,modj2,modcpu,modcpu2,modcpu3:jugadores;

(*
	//caracteristicas
		fis,des,ins,int,pre,ptoscarascteristicas:integer;
	//atributos
		ptosatributosf,ptosatributosd,ptosatributosint,ptosatributosins,ptosatributospre:integer;
		//fisicos
			ffue,fvit,fres:integer;
		//Destreza
			dag,dcor,dvel:integer;
		//inteligencia
			imen,ilog,iinv:integer;
		//presencia
			pcar,pvol,pap:integer;
		//instinto
			iper,icor,iconc:integer;*)
	
begin
	randomize;
	numeroenemigos:=0;
	equipadoespj1:=true;
	equipadoespj2:=true;
	armaj1:='0';
	armaj2:='0';
	textcolor(white);
	opcrea:=#0;
	oppulsa:=#1;
	xmenu:=1;
	ymenu:=1;
	pantallacarga(10);
	cursoroff;
	repeat
		clrscr;
		writeln('  Nueva partida');
		writeln('  Continuar');
		repeat
			case oppulsa of
				#72:if ymenu=2 then
					ymenu:=ymenu-1;
				#80:if ymenu=1 then
					ymenu:=ymenu+1;
			end;
			if oppulsa<>#0 then
				begin
					gotoxy(xmenu,ymenu);
					textcolor(lightred);
					write(#175);
					textcolor(white);
				end;
			oppulsa:=#0;
		until keypressed;
		oppulsa:=readkey;
		if oppulsa=#0 then
			oppulsa:=readkey;
		if oppulsa=#13 then
			case ymenu of
				2:begin
						clrscr;
						cursoron;
						writeln('Introduce contrase',#164,'a:');
						intcontrasena(contrasenaintrducida);
						contrasena:='';
						ASSIGN(ficheronuevo,'jugadores/contrasena.rar');
						RESET(ficheronuevo);
							while not(EOF(ficheronuevo)) do
								begin
									readln(ficheronuevo,carcon);
									contrasena:=contrasena+chr(carcon);
								end;
						close(ficheronuevo);
						Assign(ficheronuevo,'jugadores/cod.rar');
						Reset(ficheronuevo);
						readln(ficheronuevo,codigo);
						close(ficheronuevo);
						encritarYdesencriptar(contrasena,false,codigo);
						if contrasena=contrasenaintrducida then
								opcrea:='s';
						cursoroff;
					end;
				1:opcrea:='n';
			end;
	until opcrea<>#0;
	clrscr;
	cursoron;
	//writeln('Ya tienes personaje?(s/n)');
	//repeat
		//opcrea:=readkey;
	//until opcrea in ['s','S','n','N'];
	if opcrea in ['n','N'] then
		begin 
			k:='1';
			writeln('Introduce contraseña:');
			intcontrasena(contrasena);
			encritarYdesencriptar(contrasena,true,codigo);
			Assign(ficheronuevo,'jugadores/contrasena.rar');
			Rewrite(ficheronuevo);
			for i:=1 to length(contrasena) do
					begin
						Writeln(ficheronuevo,ord(contrasena[i]));
					end;
			close(ficheronuevo);
			Assign(ficheronuevo,'jugadores/cod.rar');
			Rewrite(ficheronuevo);
			Writeln(ficheronuevo,codigo);
			close(ficheronuevo);
			opmen:=['1'..'2'];
			repeat
				clrscr;
				ptoscarascteristicas:=25;
				fis:=1;
				des:=1;
				ins:=1;
				int:=1;
				pre:=1;
				ffue:=0;
				fvit:=0;
				fres:=0;
				dag:=0;
				dcor:=0;
				dvel:=0;
				imen:=0;
				ilog:=0;
				iinv:=0;
				iper:=0;
				iint:=0;
				iconc:=0;
				pcar:=0;
				pvol:=0;
				pap:=0;
				nombre:='0';
				j:='j'+k;
				mover(nombre,fis,des,int,ins,pre,ptoscarascteristicas);
				ptosatributosf:=fis*2;
				ptosatributosd:=des*2;
				ptosatributosint:=int*2;
				ptosatributosins:=ins*2;
				ptosatributospre:=pre*2;
				mover2(j,ffue,fvit,fres,ptosatributosf,fis);
				readkey;
				mover3(j,dag,dcor,dvel,ptosatributosd,des);
				readkey;
				mover4(j,imen,ilog,iinv,ptosatributosint,int);
				readkey;
				mover5(j,iper,iint,iconc,ptosatributosins,ins);
				readkey;
				mover6(j,pcar,pvol,pap,ptosatributospre,pre);
				readkey;
				//creacionnuevoprofile
				Assign(ficheronuevo,'jugadores/'+j+'/profileatrib'+j+'.txt');
				Rewrite(ficheronuevo);
				Writeln(ficheronuevo,fis);//1
				Writeln(ficheronuevo,des);//2
				Writeln(ficheronuevo,ins);//3
				Writeln(ficheronuevo,int);//4
				Writeln(ficheronuevo,pre);//5
				close(ficheronuevo);
				Assign(ficheronuevo,'jugadores/'+j+'/profilefis'+j+'.txt');
				Rewrite(ficheronuevo);
				Writeln(ficheronuevo,ffue);//6
				Writeln(ficheronuevo,fvit);//7
				Writeln(ficheronuevo,fres);//8
				close(ficheronuevo);
				Assign(ficheronuevo,'jugadores/'+j+'/profiledes'+j+'.txt');
				Rewrite(ficheronuevo);
				Writeln(ficheronuevo,dag);//9
				Writeln(ficheronuevo,dcor);//10
				Writeln(ficheronuevo,dvel);//11
				close(ficheronuevo);
				Assign(ficheronuevo,'jugadores/'+j+'/profileint'+j+'.txt');
				Rewrite(ficheronuevo);
				Writeln(ficheronuevo,imen);//12
				Writeln(ficheronuevo,ilog);//13
				Writeln(ficheronuevo,iinv);//14
				close(ficheronuevo);
				Assign(ficheronuevo,'jugadores/'+j+'/profilepre'+j+'.txt');
				Rewrite(ficheronuevo);
				Writeln(ficheronuevo,pcar);//15
				Writeln(ficheronuevo,pvol);//16
				Writeln(ficheronuevo,pap);//17
				close(ficheronuevo);
				Assign(ficheronuevo,'jugadores/'+j+'/profileins'+j+'.txt');
				Rewrite(ficheronuevo);
				Writeln(ficheronuevo,iper);//18
				Writeln(ficheronuevo,iint);//19
				Writeln(ficheronuevo,iconc);//20
				close(ficheronuevo);
				Assign(ficheronuevo,'jugadores/'+j+'/profilenom'+j+'.txt');
				Rewrite(ficheronuevo);
				Writeln(ficheronuevo,nombre);
				close(ficheronuevo);
				//creacionnuevoprofile*)
				clrscr;
				writeln('1-Volver a crear.');
				if k<'2' then
					begin
						writeln('2-Crear otro personaje para otro jugador.');
					end;
				if k>='2' then
					writeln('3-Continuar.');
				repeat
					op:=readkey;					
				until op in opmen;
				if op='2' then
					begin
						k:=chr(ord(k)+1);
						opmen:=['1','3']
					end;
			until (op='3');
			cargajugador('j1',j1);
			pvtotj1:=(j1[1]+j1[7])*10;
			pvj1:=pvtotj1;
			Assign(ficheronuevo,'jugadores/j1/profilepvj1.txt');
			Rewrite(ficheronuevo);
			Writeln(ficheronuevo,pvj1);//21
			Writeln(ficheronuevo,pvtotj1);//22
			close(ficheronuevo);
			cargajugador('j2',j2);
			pvtotj2:=(j2[1]+j2[7])*10;
			pvj2:=pvtotj2;
			Assign(ficheronuevo,'jugadores/j2/profilepvj2.txt');
			Rewrite(ficheronuevo);
			Writeln(ficheronuevo,pvj2);//21
			Writeln(ficheronuevo,pvtotj2);//22
			close(ficheronuevo);
		end;
	pantallacarga(30);
	//**********carganombres**************
	ASSIGN(ficheronuevo,'jugadores/j1/profilenomj1.txt');
	RESET(ficheronuevo);
	while not(EOF(ficheronuevo)) do
		begin
			readln(ficheronuevo,nomj1);			
		end;
	close(ficheronuevo);
	ASSIGN(ficheronuevo,'jugadores/j2/profilenomj2.txt');
	RESET(ficheronuevo);
		while not(EOF(ficheronuevo)) do
			begin
				readln(ficheronuevo,nomj2);			
			end;
	close(ficheronuevo);
	repeat
		//************CargaDinero***************
		ASSIGN(ficheronuevo,'jugadores/j1/profiledinj1.7z');
		RESET(ficheronuevo);
		while not(EOF(ficheronuevo)) do
			begin
				readln(ficheronuevo,dinj1);			
			end;
		close(ficheronuevo);
		ASSIGN(ficheronuevo,'jugadores/j2/profiledinj2.7z');
		RESET(ficheronuevo);
		while not(EOF(ficheronuevo)) do
			begin
				readln(ficheronuevo,dinj2);			
			end;
		close(ficheronuevo);
		//**************************************
		//********CalcularPVjugadores***********
		cargajugador('j1',j1);
		cargajugador('j2',j2);
		//
		//pvtotj1:=(j1[1]+j1[7])*10;
		//pvj1:=pvtotj1;
		//pvtotj2:=(j2[1]+j2[7])*10;
		//pvj2:=pvtotj2;
		//for i:=1 to 25 do
			//writeln(j1[i],'-',j2[i]);
		//readkey;
		//*************************************
		//cargaarma jugadores
		ASSIGN(ficheronuevo,'jugadores/j1/profilearmaelegidaj1.txt');
		RESET(ficheronuevo);
		while not(EOF(ficheronuevo)) do
			begin
				readln(ficheronuevo,armaj1);	
			end;
		close(ficheronuevo);
		ASSIGN(ficheronuevo,'jugadores/j2/profilearmaelegidaj2.txt');
		RESET(ficheronuevo);
		while not(EOF(ficheronuevo)) do
			begin
				readln(ficheronuevo,armaj2);	
			end;
		close(ficheronuevo);
		pvtotj1:=j1[22];
		pvj1:=j1[21];
		pvtotj2:=j2[22];
		pvj2:=j2[21];
		//*************************************
		//menu********************************
		combate:=false;
		descanso:=false;
		salir:=false;
		verest:=false;
		elegireq:=false;
		tienda:=false;
		campana:=false;
		xmenu:=1;
		ymenu:=2;
		oppulsa:=#1;
		cursoroff;
		repeat
			clrscr;
			menujuego;
			repeat
				case oppulsa of
					#72:if ymenu>2 then
						ymenu:=ymenu-1;
					#80:if ymenu<8 then
						ymenu:=ymenu+1;
				end;
				if oppulsa<>#0 then
					begin
						textcolor(random(4)+10);
						gotoxy(xmenu,ymenu);
						write(#175);
					end;
				textcolor(white);
				oppulsa:=#0;
			until keypressed;
			oppulsa:=readkey;
			if oppulsa=#0 then
				oppulsa:=readkey;
			if oppulsa=#13 then
				case ymenu of
					2:if (pvj1>0)or(pvj2>0) then
						combate:=true;
					3:descanso:=true;
					4:verest:=true;
					5:tienda:=true;
					6:elegireq:=true;
					7:campana:=true;
					8:salir:=true;
				end;
		until combate or descanso or verest or salir or tienda or elegireq or campana;
		cursoron;
		//************************************
		//elegir equipamiento
		if elegireq then
			begin
				clrscr;
				writeln('Elige J1(1) o J2(2)');
				repeat
					opelec:=readkey;
				until opelec in['1','2'];
				case opelec of
					'1':eleccionarma('j1');
					'2':eleccionarma('j2');
				end;
				elegireq:=false;
			end
		//************************************
		//tiendaarmas
		else if tienda then
			begin
				clrscr;
				writeln('Elige J1(1) o J2(2)');
				repeat
					optienda:=readkey;
				until optienda in['1','2'];
				repeat
					clrscr;
					writeln('1.-Tienda de armas');
					writeln('2.-Tienda de armaduras');
					tipotienda:=readkey;
				until tipotienda in['1','2'];
				case tipotienda of
					'1':case optienda of
							'1':tiendadearmas(dinj1,'j1');
							'2':tiendadearmas(dinj2,'j2');
						end;
					'2':case optienda of
							'1':tiendadearmaduras(dinj1,'j1');
							'2':tiendadearmaduras(dinj2,'j2');
						end;
				end;
				tienda:=false;
			end
		//*************************************
		//ver estadisticas
		else if verest then
			begin
				clrscr;
				writeln('Elige J1(1) o J2(2)');
				repeat
					opest:=readkey;
				until opest in['1','2'];
				case opest of
					'1':begin
							clrscr;
							writeln('Estadisticas de ',nomj1);
							for i:=1 to 22 do
								begin
									write(matestadisticas[i]);
									gotoxy(14,wherey);
									writeln(' : ',j1[i]);
								end;
							write('Arma');
							gotoxy(14,wherey);
							write(' : ',armaj1);
						end;
					'2':begin
							clrscr;
							writeln('Estadisticas de ',nomj2);
							for i:=1 to 22 do
								begin
									write(matestadisticas[i]);
									gotoxy(14,wherey);
									writeln(' : ',j2[i]);
								end;
							write('Arma');
							gotoxy(14,wherey);
							write(' : ',armaj2);
						end;
				end;
				verest:=false;
				readkey;
			end
		//************************************
		//descanso
		else if descanso then
			begin
				clrscr;
				writeln('Elige J1(1) o J2(2)');
				repeat
					opdescanso:=readkey;
				until opdescanso in['1','2'];
				case opdescanso of
					'1':begin
							descansar(j1[22],j1[21]);
						end;
					'2':begin
							descansar(j2[22],j2[21]);
						end;
				end;
				Assign(ficheronuevo,'jugadores/j1/profilepvj1.txt');
				Rewrite(ficheronuevo);
				Writeln(ficheronuevo,j1[21]);//21
				Writeln(ficheronuevo,j1[22]);//22
				close(ficheronuevo);
				Assign(ficheronuevo,'jugadores/j2/profilepvj2.txt');
				Rewrite(ficheronuevo);
				Writeln(ficheronuevo,j2[21]);//21
				Writeln(ficheronuevo,j2[22]);//22
				close(ficheronuevo);
				descanso:=false;
			end
		//**********************************
		//combate
		else if combate then
			begin
				pantallacarga(50);
				combatall(numeroenemigos,nomj1,nomj2,combate,equipadoespj1,equipadoespj2);
			end
		else if campana then
			begin
				pantallacarga(50);
				campains;
			end;
	until salir;
	clrscr;
end.
